package es.antonio.duarte.abrahamAdmin.struts.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import es.antonio.duarte.abrahamAdmin.servicios.CosasServicio;
import es.antonio.duarte.abrahamAdmin.servicios.DiarioServicio;
import es.antonio.duarte.abrahamAdmin.servicios.FraseServicio;
import es.antonio.duarte.abrahamAdmin.struts.Constantes;

/**
 * Carga la lista de todos los diarios, cosas y frases, y la muestra en pantalla para cuando se
 * accede a la página de validación. La lista de diarios, frases y cosas, las guarda en la
 * request bajo la variable diariosMostrados, frasesMostradas, cosasMostradas indicadas en la clase
 * Constantes.Nombre_VARIABLE_XXX.
 */
public class ValidacionAction extends BaseAction {

   /**
    * El servicio a utilizar para todas las operaciones relativas a los diario.
    */
   private DiarioServicio servicioDiario;
   /**
    * El servicio a utilizar para todas las operaciones relativas a las frases.
    */
   private FraseServicio servicioFrase;
   /**
    * El servicio a utilizar para todas las operaciones relativas a las cosas.
    */
   private CosasServicio servicioCosas;

   /** Manejador de trazas. */
   private final Log log = LogFactory.getLog(ValidacionAction.class);

   /**
    * Ejecucion del action. Ejecuta la validacion a partir de los datos del
    * actionForm.
    * @param mapping ActionMapping asociado al action
    * @param form ActionForm asocido al action
    * @param request HttpServletRequest asociado al action
    * @param response HttpServletResponse asociado al action
    * @return ActionForward
    * @throws Exception En caso de error en la ejecucion del action
    * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
    *      org.apache.struts.action.ActionForm,
    *      javax.servlet.http.HttpServletRequest,
    *      javax.servlet.http.HttpServletResponse)
    */
   @Override
   public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
      logDebug(log, "Llamando a los servicios");
      request.setAttribute(Constantes.NOMBRE_VARIABLE_DIARIO, servicioDiario.consultar());
      request.setAttribute(Constantes.NOMBRE_VARIABLE_COSAS, servicioCosas.consultar());
      request.setAttribute(Constantes.NOMBRE_VARIABLE_FRASES, servicioFrase.consultar());
      logDebug(log, "Devolviendo mapping 'validacion'");
      return mapping.findForward(Constantes.VALIDACION);
   }

   /**
    * Obtiene el valor de servicio diario.
    * @return Valor de servicioDiario
    */
   public DiarioServicio getServicioDiario() {
      return servicioDiario;
   }

   /**
    * Asigna el valor de servicioDiario.
    * @param servicioDiario Valor a asignar
    */
   public void setServicioDiario(final DiarioServicio servicioDiario) {
      this.servicioDiario = servicioDiario;
   }
   /**
    * Obtiene el valor de servicio frase.
    * @return Valor de servicioFrase
    */
   public FraseServicio getServicioFrase() {
	   return servicioFrase;
   }
   
   /**
    * Asigna el valor de servicioFrase.
    * @param servicioFrase Valor a asignar
    */
   public void setServicioFrase(final FraseServicio servicioFrase) {
	   this.servicioFrase = servicioFrase;
   }
   /**
    * Obtiene el valor de servicio cosas.
    * @return Valor de servicioCosas
    */
   public CosasServicio getServicioCosas() {
	   return servicioCosas;
   }
   
   /**
    * Asigna el valor de servicioCosas.
    * @param servicioCosas Valor a asignar
    */
   public void setServicioCosas(final CosasServicio servicioCosas) {
	   this.servicioCosas = servicioCosas;
   }

}
